1. Field of Invention
This invention relates generally to software program development and more specifically to performance analysis of software programs.
2. Discussion of Related Art
Software programs are generally tested during their development. Testing has traditionally been used to verify that the software program performs the functions as intended. As software programs have become more complex, performance testing has become a more significant component of the development cycle. Performance testing supports “performance engineering” activities during which portions of the program that cause delay in program execution are identified and are rewritten to reduce the time required to execute the program.
Performance testing is often performed by inserting “probes” into a program under test. Probes are simple functions that write data into log files when executed. The data in the log files may then be analyzed to determine the various characteristic of the program operation.
Traditional performance analysis tools use data in the log files to present an aggregated view of execution of the software program under test. For example, the data in the log files may be used to determine the number of times each function in the software program under test has been invoked. Such information may, for example, reveal to a performance engineer that a particular function is in a loop that is executed more times than intended. Such an observation may for example, indicate that performance of the program may be improved by restructuring the program to reduce the number of times that loop is executed.
An aggregated view of the data may also indicate the average amount of time in which each function executes. If the average execution time for a function greatly exceeds the expected execution time, a performance engineer may investigate whether some event blocks execution of that function.
Tools have been employed that present performance data on a software program under test for a performance engineer to review. Such tools have, for example, allowed a performance engineer to select from multiple types of aggregated data so that the performance engineer could examine different aspects of a software program under test. Such tools have also included timeline views, which allow the performance engineer to see the activity level of the software program under test.